![]() ![]() |
Q: 1 台のコンピュータで同じ Rendezvous サービスを複数回登録したとき、どの場合にも名前衝突のエラーが発生しません。 これはなぜですか? A: 同一のコンピュータで同じ名前/タイプ/ドメイン/ポートを複数回登録した場合、登録した DNS リソースレコードは同じ rdata を持ち、矛盾が起きないため、エラーが発生しません。名前衝突と認識されるのは、rdata が異なる場合のみです。 このようになっているのは、Rendezvous がさまざまなプロキシ機能を果たせるようにするためです。たとえば、ネットワークに接続されている、LPR による印刷を行うプリンタが Rendezvous を使ってアドバタイズをしていないとします。この場合には、プリンタに代わってアドバタイズを行う Rendezvous プロキシを作成することができます。耐障害性を考慮して、ネットワーク上でプロキシを 2 つ実行する場合には、プロキシどうしが衝突する状況は避ける必要があります。Rendezvous では、rdata が異なる場合にのみ衝突があると認識するため、2 つのプロキシは何の問題もなく共存できます。どちらのプロキシも同じ問い合わせに対して同じ答えを返す限り、一方が他方の答えを、衝突するものと認識しません。 rdata が異なる必要がある状況としては、CFNetServices または NSNetServices を使用して、異なるコンピュータから同じ 2 つの名前/タイプ/ドメイン/ポートを登録した場合が考えられます。この場合、SRV レコードの Target Host に含まれるアドレスレコードが異なるために(2 つのコンピュータの IP アドレスが異なるため)rdata が異なります。その結果、名前衝突のエラーが発生します。同じコンピュータから 2 つのまったく同じ名前/タイプ/ドメインを登録しても、ポート番号が異なれば、名前が衝突していると認識されます。 1 台のコンピュータで同じ Rendezvous サービスを複数回登録することはまったく正当なことですが、多くの場合、複数回登録はアプリケーションのバグが原因です。したがって、アプリケーションデベロッパがこの状況を検出できるように、次のようなエラーメッセージがシステムのログ(/var/log/system.log)に出力されるようになっています。
Rendezvous によって使用されているプロトコルの詳細については、Rendezvous Developer Web Site から参照できる技術仕様を参照してください。 [2003 年 10 月 23 日] |